#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
'''
@author: 5822 - Duarte Marques & 5955 - João Rosa
@date: 05 de Novembro de 2012
@obs: Trabalho de Linguagens de Programação em Python
      Docente: Prof. Jasnau Caeiro
'''

import numpy as np
import matplotlib.pyplot as plt
import csv
from pylab import *

class Graficos:
    '''
    Classe que contêm o método que cria os gráficos através dos .CSV
    '''
    
    def grafico(self,nome, curso):
        '''
        Método que cria os gráficos das estatísticas
        através da biblioteca "matplotlib".
        
        @param nome: este parametro é o transporta o nome do .CSV
                     que pretendemos abrir para criar o gráfico.
        
        @param curso: este parametro é o que nos trás o "curso" ou
                      "nível de formação" para comparar se o que estamos
                      a escolher é o mesmo que está na no .CSV
        '''
        
        reader = csv.reader(open('{0}.csv'.format(nome), 'rb'))
        reader = list(reader)
        valores = []
        
        for linha in reader:            
            if curso == linha[0]:
                for coluna in range(1,len(linha)):
                    if len(valores) <= 15:
                        valores.append(float(linha[coluna]))
        
        fig = plt.figure()
        ax = fig.add_subplot(111)
        N = len(valores)
        
        ind = range(N)    # the x locations for the groups
        width = 0.60         # the width of the bars
        p1 = ax.bar(ind, valores, width, align='center', color='r')
        
        ax.set_title(curso.decode('utf-8'))
        ax.set_xticks(ind)
        ax.set_xticklabels( ['95/96', '96/97', '97/98', '98/99', '99/00', '00/01', 
                             '01/02', '02/03', '03/04', '04/05', '05/06', '06/07', 
                             '07/08', '08/09', '09/10', '10/11'] )
        
        for bar in p1:
            height = bar.get_height()
            ax.text(bar.get_x()+bar.get_width()/2., 0.5*height, '%d'%int(height),
                    ha='center', va='bottom')
            
        grid(True)
        fig.autofmt_xdate()
        #savefig("{0}.png".format(curso))
        plt.show()
        pass
    

